Modern businesses often use computer systems to support their operations. Indeed, many businesses use an integrated suite of applications that operate as an enterprise management system (EMS) to manage business functions. In an EMS system, almost any business operation—product planning, product manufacturing, inventory control, product sales and distribution and human resources—can be modeled by the EMS system. Business employees interact with a computerized EMS system to perform transactions that represent business operations. In this way, the computerized EMS system can track business operations and develop data records on which to analyze and forecast business performance.
An EMS system often includes multiple discrete computer applications that are devoted to specific functions within the larger system. For example, a separate application may be provided for each of the business operations listed above—product planning, product manufacturing, inventory control, product sales and distribution and human resources (called “transactional” applications herein). Other applications may be provided to perform statistical studies of business operations (“analytical” applications), which generate reports from transactional data. Although an EMS system may provide a loose coupling among the transactional and analytical applications by allowing a user to launch them from a common login screen of the EMS system, the transactional and analytical applications are used separately.
One problem with implementing transactional and analytical applications separately is that, during the use of one of these types of applications, it may be desirable to simultaneously use the other type in a related way, and there is currently no satisfactory way of doing this. For example, a user may perform a particular transaction, such as a budget-related transaction, and desire to see a report related to the transaction, such as a budget analysis report for a particular month. Because the transaction and the analytical report are typically implemented by separate applications, this requires the user to independently find and launch the analytical application, and in the process momentarily leave behind the transactional application to do so. However, leaving the transactional application to find and launch the analytical application is undesirable because it breaks the work flow of the transaction, potentially reducing the efficiency of the user. Moreover, independently launching the analytical application requires the user to manually configure the analytical application to be in a state which is relevant to the transaction being conducted in the transactional application, which is also inefficient.
Furthermore, the specific analytical application which is desired by the user may not always be the same, and may depend in part on the type of transaction being conducted in the transactional application. However, EMS systems currently typically display a static list of available analytical applications. Therefore, a further inefficiency is incurred, if the user always has to choose from the same static list of analytical applications, because the user must browse through many second applications that are unrelated to the transaction being conducted.
These problems are also not necessarily limited to the interplay between transactional and analytical applications, but can instead generally occur whenever a user performs a service in a first application, and simultaneously needs access to a related service in a second application. Thus, a need exists in the art for a way to launch a second application, e.g. an analytical application, without necessitating leaving behind a first application, e.g., a transactional application, to locate and launch the second application. There is a further need to not necessitate unnecessarily browsing by the user through a list of unrelated applications to locate the desired second application. There is an even further need for the launching of the second application to be performed in a way that relates to data being manipulated in the first application.
A method includes executing a first application program in which an operator interacts with the first application. During the execution of the first application, a launchpad service is simultaneously executed that is configured to invoke another, second application program. When a user interface of the first application program is refreshed, a state of the launchpad service is determined based on content of the refreshed user interface, and one or more launchpad control elements are displayed along with the refreshed user interface. When one of the launchpad control elements is activated by an operator, the launchpad service initiates execution of a particular second application program referenced by the activated control element, and advances execution of the second application program to a processing stage determined by the activated control element.